/**
 */
package org.mro.grib.model.files.secondEdition.dataRepresentations;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Data Representation Template52</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getGroupSplittingMethod <em>Group Splitting Method</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getMissingValueManagement <em>Missing Value Management</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getPrimaryMissingValueSubstitute <em>Primary Missing Value Substitute</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getSecondaryMissingValueSubstitute <em>Secondary Missing Value Substitute</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getNg <em>Ng</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getReferenceForGroupWidths <em>Reference For Group Widths</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getGroupWidthsNumberOfBits <em>Group Widths Number Of Bits</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getReferenceForGroupLengths <em>Reference For Group Lengths</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getGroupLengthsIncrement <em>Group Lengths Increment</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getTrueLengthOfLastGroup <em>True Length Of Last Group</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getScaledGroupLengthNumberOfBits <em>Scaled Group Length Number Of Bits</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate52()
 * @model annotation="http://www.eclipse.org/emf/2002/GenModel description_en='Grid point data \u2013 complex packing' note_1_en='For most templates, details of the packing process are described in Regulation 92.9.4.' note_2_en='Group lengths have no meaning for row by row packing, where groups are coordinate lines (so the grid description\r\nsection and possibly the bit-map section are enough); for consistency, associated field width and reference should then\r\nbe encoded as 0.' note_3_en='For row by row packing with a bit-map, there should always be as many groups as rows. In case of rows with only\r\nmissing values, all associated descriptors should be coded as zero.' note_4_en='Management of widths into a reference and increments, together with management of lengths as scaled incremental\r\nvalues, are intended to save descriptor size (which is an issue as far as compression gains are concerned).' note_5_en='Management of explicitly missing values is an alternative to bit-map use within Section 6; it is intended to reduce the\r\nwhole GRIB message size.' note_6_en='There may be two types of missing value(s), such as to make a distinction between static misses (for instance, due to a\r\nland/sea mask) and occasional misses.' note_7_en='As an extra option, substitute value(s) for missing data may be specified. If not wished (or not applicable), all bits should\r\nbe set to 1 for relevant substitute value(s).' note_8_en='If substitute value(s) are specified, type of content should be consistent with original field values (floating-point - and then\r\nIEEE 32-bit encoded-, or integer).' note_9_en='If primary missing values are used, such values are encoded within appropriate group with all bits set to 1 at packed data\r\nlevel.' note_10_en='If secondary missing values are used, such values are encoded within appropriate group with all bits set to 1, except the\r\nlast one set to 0, at packed data level.' note_11_en='A group containing only missing values (of either type) will be encoded as a constant group (null width, no associated\r\ndata) and the group reference will have all bits set to 1 for primary type, and all bits set to 1, except the last bit set to 0, for\r\nsecondary type.' note_12_en='If necessary, group widths and/or field width of group references may be enlarged to avoid ambiguities between\r\nmissing value indicator(s) and true data.' note_13_en='The group width is the number of bits used for every value in a group.' note_14_en='The group length (L) is the number of values in a group.' note_15_en='The essence of the complex packing method is to subdivide a field of values into NG groups, where the values in each\r\ngroup have similar sizes. In this procedure, it is necessary to retain enough information to recover the group lengths upon\r\ndecoding. The NG group lengths for any given field can be described by Ln = ref + Kn x len_inc, n = 1, NG, where ref is\r\ngiven by octets 38\u201341 and len_inc by octet 42. The NG values of K (the scaled group lengths) are stored in the data\r\nsection, each with the number of bits specified by octet 47. Since the last group is a special case which may not be able\r\nto be specified by this relationship, the length of the last group is stored in octets 43\u201346.' note_16_en='See data template 7.2 and associated Notes for complementary information.'"
 * @generated
 */
public interface DataRepresentationTemplate52 extends DataRepresentationTemplate50 {
	/**
	 * Returns the value of the '<em><b>Group Splitting Method</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Group Splitting Method</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Group Splitting Method</em>' attribute.
	 * @see #setGroupSplittingMethod(byte)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate52_GroupSplittingMethod()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Group splitting method used' description_en='Group splitting method used (see Code table 5.4)'"
	 * @generated
	 */
	byte getGroupSplittingMethod();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getGroupSplittingMethod <em>Group Splitting Method</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Group Splitting Method</em>' attribute.
	 * @see #getGroupSplittingMethod()
	 * @generated
	 */
	void setGroupSplittingMethod(byte value);

	/**
	 * Returns the value of the '<em><b>Missing Value Management</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Missing Value Management</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Missing Value Management</em>' attribute.
	 * @see #setMissingValueManagement(byte)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate52_MissingValueManagement()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Missing value management used' description_en='Missing value management used (see Code table 5.5)'"
	 * @generated
	 */
	byte getMissingValueManagement();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getMissingValueManagement <em>Missing Value Management</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Missing Value Management</em>' attribute.
	 * @see #getMissingValueManagement()
	 * @generated
	 */
	void setMissingValueManagement(byte value);

	/**
	 * Returns the value of the '<em><b>Primary Missing Value Substitute</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Primary Missing Value Substitute</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Primary Missing Value Substitute</em>' attribute.
	 * @see #setPrimaryMissingValueSubstitute(int)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate52_PrimaryMissingValueSubstitute()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Primary missing value substitute' description_en='Primary missing value substitute'"
	 * @generated
	 */
	int getPrimaryMissingValueSubstitute();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getPrimaryMissingValueSubstitute <em>Primary Missing Value Substitute</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Primary Missing Value Substitute</em>' attribute.
	 * @see #getPrimaryMissingValueSubstitute()
	 * @generated
	 */
	void setPrimaryMissingValueSubstitute(int value);

	/**
	 * Returns the value of the '<em><b>Secondary Missing Value Substitute</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Secondary Missing Value Substitute</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Secondary Missing Value Substitute</em>' attribute.
	 * @see #setSecondaryMissingValueSubstitute(int)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate52_SecondaryMissingValueSubstitute()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Secondary missing value substitute' description_en='Secondary missing value substitute'"
	 * @generated
	 */
	int getSecondaryMissingValueSubstitute();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getSecondaryMissingValueSubstitute <em>Secondary Missing Value Substitute</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Secondary Missing Value Substitute</em>' attribute.
	 * @see #getSecondaryMissingValueSubstitute()
	 * @generated
	 */
	void setSecondaryMissingValueSubstitute(int value);

	/**
	 * Returns the value of the '<em><b>Ng</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Ng</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Ng</em>' attribute.
	 * @see #setNg(int)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate52_Ng()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='NG' description_en='Number of groups of data values into which field is split'"
	 * @generated
	 */
	int getNg();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getNg <em>Ng</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Ng</em>' attribute.
	 * @see #getNg()
	 * @generated
	 */
	void setNg(int value);

	/**
	 * Returns the value of the '<em><b>Reference For Group Widths</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Reference For Group Widths</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Reference For Group Widths</em>' attribute.
	 * @see #setReferenceForGroupWidths(byte)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate52_ReferenceForGroupWidths()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Reference for group widths' description_en='Reference for group widths (see Note 12)'"
	 * @generated
	 */
	byte getReferenceForGroupWidths();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getReferenceForGroupWidths <em>Reference For Group Widths</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Reference For Group Widths</em>' attribute.
	 * @see #getReferenceForGroupWidths()
	 * @generated
	 */
	void setReferenceForGroupWidths(byte value);

	/**
	 * Returns the value of the '<em><b>Group Widths Number Of Bits</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Group Widths Number Of Bits</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Group Widths Number Of Bits</em>' attribute.
	 * @see #setGroupWidthsNumberOfBits(byte)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate52_GroupWidthsNumberOfBits()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Number of bits used for the group widths' description_en='Number of bits used for the group widths (after the reference value in octet 36 has been\r\nremoved)'"
	 * @generated
	 */
	byte getGroupWidthsNumberOfBits();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getGroupWidthsNumberOfBits <em>Group Widths Number Of Bits</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Group Widths Number Of Bits</em>' attribute.
	 * @see #getGroupWidthsNumberOfBits()
	 * @generated
	 */
	void setGroupWidthsNumberOfBits(byte value);

	/**
	 * Returns the value of the '<em><b>Reference For Group Lengths</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Reference For Group Lengths</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Reference For Group Lengths</em>' attribute.
	 * @see #setReferenceForGroupLengths(int)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate52_ReferenceForGroupLengths()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Reference for group lengths' description_en='Reference for group lengths (see Note 13)'"
	 * @generated
	 */
	int getReferenceForGroupLengths();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getReferenceForGroupLengths <em>Reference For Group Lengths</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Reference For Group Lengths</em>' attribute.
	 * @see #getReferenceForGroupLengths()
	 * @generated
	 */
	void setReferenceForGroupLengths(int value);

	/**
	 * Returns the value of the '<em><b>Group Lengths Increment</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Group Lengths Increment</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Group Lengths Increment</em>' attribute.
	 * @see #setGroupLengthsIncrement(byte)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate52_GroupLengthsIncrement()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Length increment for the group lengths' description_en='Length increment for the group lengths (see Note 14)'"
	 * @generated
	 */
	byte getGroupLengthsIncrement();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getGroupLengthsIncrement <em>Group Lengths Increment</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Group Lengths Increment</em>' attribute.
	 * @see #getGroupLengthsIncrement()
	 * @generated
	 */
	void setGroupLengthsIncrement(byte value);

	/**
	 * Returns the value of the '<em><b>True Length Of Last Group</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>True Length Of Last Group</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>True Length Of Last Group</em>' attribute.
	 * @see #setTrueLengthOfLastGroup(int)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate52_TrueLengthOfLastGroup()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='True length of last group' description_en='True length of last group'"
	 * @generated
	 */
	int getTrueLengthOfLastGroup();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getTrueLengthOfLastGroup <em>True Length Of Last Group</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>True Length Of Last Group</em>' attribute.
	 * @see #getTrueLengthOfLastGroup()
	 * @generated
	 */
	void setTrueLengthOfLastGroup(int value);

	/**
	 * Returns the value of the '<em><b>Scaled Group Length Number Of Bits</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Scaled Group Length Number Of Bits</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Scaled Group Length Number Of Bits</em>' attribute.
	 * @see #setScaledGroupLengthNumberOfBits(byte)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate52_ScaledGroupLengthNumberOfBits()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Number of bits used for the scaled group lengths' description_en='Number of bits used for the scaled group lengths (after subtraction of the reference value\r\ngiven in octets 38\u201341 and division by the length increment given in octet 42)'"
	 * @generated
	 */
	byte getScaledGroupLengthNumberOfBits();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate52#getScaledGroupLengthNumberOfBits <em>Scaled Group Length Number Of Bits</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Scaled Group Length Number Of Bits</em>' attribute.
	 * @see #getScaledGroupLengthNumberOfBits()
	 * @generated
	 */
	void setScaledGroupLengthNumberOfBits(byte value);

} // DataRepresentationTemplate52
